home *** CD-ROM | disk | FTP | other *** search
/ gdead.berkeley.edu / gdead.berkeley.edu.tar / gdead.berkeley.edu / pub / gdead / mac / stack-o-dead-1.8 / stack-o-dead-1.8.2.sit.hqx / Dead Shows / background_2616.xml next >
Extensible Markup Language  |  1991-03-06  |  74KB  |  1,313 lines

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE background PUBLIC "-//Apple, Inc.//DTD background V 2.0//EN" "" >
  3. <background>
  4.     <id>2616</id>
  5.     <filler1>0</filler1>
  6.     <bitmap>BMAP_3747.pbm</bitmap>
  7.     <cantDelete> <true /> </cantDelete>
  8.     <showPict> <true /> </showPict>
  9.     <dontSearch> <false /> </dontSearch>
  10.     <link rel="stylesheet" type="text/css" href="stylesheet_3103.css" />
  11.     <part>
  12.         <id>99</id>
  13.         <type>button</type>
  14.         <visible> <true /> </visible>
  15.         <reserved5> 0 </reserved5>
  16.         <reserved4> 0 </reserved4>
  17.         <reserved3> 0 </reserved3>
  18.         <reserved2> 0 </reserved2>
  19.         <reserved1> 0 </reserved1>
  20.         <enabled> <true /> </enabled>
  21.         <rect>
  22.             <left>399</left>
  23.             <top>282</top>
  24.             <right>476</right>
  25.             <bottom>304</bottom>
  26.         </rect>
  27.         <style>shadow</style>
  28.         <showName> <true /> </showName>
  29.         <highlight> <false /> </highlight>
  30.         <autoHighlight> <true /> </autoHighlight>
  31.         <sharedHighlight> <true /> </sharedHighlight>
  32.         <family>0</family>
  33.         <titleWidth>0</titleWidth>
  34.         <icon>0</icon>
  35.         <textAlign>center</textAlign>
  36.         <font>Chicago</font>
  37.         <textSize>12</textSize>
  38.         <textStyle>plain</textStyle>
  39.         <name>= Stacks =</name>
  40.         <script>--  This button will present a pop-up menu of stack names.--  Hold the mouse button down for a few seconds until--  the menu appears.  Select one of the choices to--  go to that stack.on mouseDownif the commandKey is down thendoHelpexit mouseDownend if--global stackLastput true into useLastif the optionKey is down then put false into useLastif stackLast is empty thenput "1,1,1,1,1,1" into stackListput the rect of me into thePtif item 2 of thePt > 230 then put 230 into item 2 of thePtput "Songs;Tapes;Labels;Stats;Utility" into listput popUp( thePt, list ) into choice-- if it is 0, then no choice was made...if choice is not 0 thenput piece( list, ";", choice ) into theStackif theStack is not "Songs" then put "Dead " before theStackset the hilite of me to falsego stack theStackend ifend ifend mouseDown</script>
  41.     </part>
  42.     <part>
  43.         <id>17</id>
  44.         <type>button</type>
  45.         <visible> <true /> </visible>
  46.         <reserved5> 0 </reserved5>
  47.         <reserved4> 0 </reserved4>
  48.         <reserved3> 0 </reserved3>
  49.         <reserved2> 0 </reserved2>
  50.         <reserved1> 0 </reserved1>
  51.         <enabled> <true /> </enabled>
  52.         <rect>
  53.             <left>439</left>
  54.             <top>125</top>
  55.             <right>498</right>
  56.             <bottom>153</bottom>
  57.         </rect>
  58.         <style>transparent</style>
  59.         <showName> <false /> </showName>
  60.         <highlight> <false /> </highlight>
  61.         <autoHighlight> <true /> </autoHighlight>
  62.         <sharedHighlight> <true /> </sharedHighlight>
  63.         <family>0</family>
  64.         <titleWidth>0</titleWidth>
  65.         <icon>0</icon>
  66.         <textAlign>center</textAlign>
  67.         <font>Chicago</font>
  68.         <textSize>12</textSize>
  69.         <textStyle>plain</textStyle>
  70.         <name>Next</name>
  71.         <script>--  This button sends you to the next card.on mouseDown----  The following does not seem to work right in HC 2.0---- go next card-- repeat while the mouse is down--   go to next card--   wait 1-- end repeatend mouseDownon mouseUpgo next cardend mouseUp</script>
  72.     </part>
  73.     <part>
  74.         <id>18</id>
  75.         <type>button</type>
  76.         <visible> <true /> </visible>
  77.         <reserved5> 0 </reserved5>
  78.         <reserved4> 0 </reserved4>
  79.         <reserved3> 0 </reserved3>
  80.         <reserved2> 0 </reserved2>
  81.         <reserved1> 0 </reserved1>
  82.         <enabled> <true /> </enabled>
  83.         <rect>
  84.             <left>377</left>
  85.             <top>125</top>
  86.             <right>437</right>
  87.             <bottom>153</bottom>
  88.         </rect>
  89.         <style>transparent</style>
  90.         <showName> <false /> </showName>
  91.         <highlight> <false /> </highlight>
  92.         <autoHighlight> <true /> </autoHighlight>
  93.         <sharedHighlight> <true /> </sharedHighlight>
  94.         <family>0</family>
  95.         <titleWidth>0</titleWidth>
  96.         <icon>0</icon>
  97.         <textAlign>center</textAlign>
  98.         <font>Chicago</font>
  99.         <textSize>12</textSize>
  100.         <textStyle>plain</textStyle>
  101.         <name>Prev</name>
  102.         <script>--  This button sends you to the previous card.on mouseDown----  The following does not seem to work right in HC 2.0----go prev card--repeat while the mouse is down--  go to prev card--end repeatend mouseDownon mouseUpgo prev cardend mouseUp</script>
  103.     </part>
  104.     <part>
  105.         <id>93</id>
  106.         <type>button</type>
  107.         <visible> <true /> </visible>
  108.         <reserved5> 0 </reserved5>
  109.         <reserved4> 0 </reserved4>
  110.         <reserved3> 0 </reserved3>
  111.         <reserved2> 0 </reserved2>
  112.         <reserved1> 0 </reserved1>
  113.         <enabled> <true /> </enabled>
  114.         <rect>
  115.             <left>402</left>
  116.             <top>237</top>
  117.             <right>474</right>
  118.             <bottom>259</bottom>
  119.         </rect>
  120.         <style>shadow</style>
  121.         <showName> <true /> </showName>
  122.         <highlight> <false /> </highlight>
  123.         <autoHighlight> <true /> </autoHighlight>
  124.         <sharedHighlight> <true /> </sharedHighlight>
  125.         <family>0</family>
  126.         <titleWidth>0</titleWidth>
  127.         <icon>0</icon>
  128.         <textAlign>center</textAlign>
  129.         <font>Chicago</font>
  130.         <textSize>12</textSize>
  131.         <textStyle>plain</textStyle>
  132.         <name>Utility...</name>
  133.         <script>--  This button shows a text field which contains a list of--  miscellaneous handler functions in the background and--  stack scripts which may be handy, but are not important--  enough to include as buttons.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--lock screenshowUtilityunlock screen with visual effect dissolveend mouseUp</script>
  134.     </part>
  135.     <part>
  136.         <id>57</id>
  137.         <type>button</type>
  138.         <visible> <true /> </visible>
  139.         <reserved5> 0 </reserved5>
  140.         <reserved4> 0 </reserved4>
  141.         <reserved3> 0 </reserved3>
  142.         <reserved2> 0 </reserved2>
  143.         <reserved1> 0 </reserved1>
  144.         <enabled> <true /> </enabled>
  145.         <rect>
  146.             <left>402</left>
  147.             <top>162</top>
  148.             <right>474</right>
  149.             <bottom>184</bottom>
  150.         </rect>
  151.         <style>shadow</style>
  152.         <showName> <true /> </showName>
  153.         <highlight> <false /> </highlight>
  154.         <autoHighlight> <true /> </autoHighlight>
  155.         <sharedHighlight> <true /> </sharedHighlight>
  156.         <family>0</family>
  157.         <titleWidth>0</titleWidth>
  158.         <icon>0</icon>
  159.         <textAlign>center</textAlign>
  160.         <font>Chicago</font>
  161.         <textSize>12</textSize>
  162.         <textStyle>plain</textStyle>
  163.         <name>Go to...</name>
  164.         <script>--  This button will help you find a show by date.  You can enter--  an explicit date, and it will try to find that show.  You can--  enter just the month and day (mm/dd) and it will assume the--  same year as the current show.----Option Key----  If the option key is used, it will ask you for a year, and send--  you to the first card of that year by using an internal map of--  cards for first-of-year shows.on mouseUpif the commandKey is down thendoHelpelse if the optionKey is down thengoToYearelsegoToDateend ifend mouseUpon goToDate--goto card function-- requests destination from the user.  input of the form--    .[+,-]nn jumps relative +- nn cards    e.g. .-20 goes back 20 cards--    mm/dd/yy goes to the show date, if it exists--put the number of this card into origCardask "Enter the show date: "if it is empty then exit goToDateif char 1 of it is "." thenput char 3 to the number of chars in it of it into relJumpif char 2 of it is "-" thenput the number of this card - relJump into newCardgo card newCardelse if char 2 of it is "+" thenput the number of this card + relJump into newCardgo card newCardend ifelseif piece( it, "/", 3 ) is empty thenput "/" & piece( field "date", "/", 3 ) after itput itend ifput it into theShowput findShowByDate( theShow ) into foundItif foundIt is false thenanswer "Show date not found !"end ifhide messageend ifend goToDateon goToYearask "First card of Year: "if it is empty then exit goToYeargoFirstCardOfYear itend goToYearon planA       -- brute force FINDask "Enter the show date: "if it is empty then exit planAput it into theShowconvert it to secondsif it is theShow thenfind theShow    -- in field "date"elseconvert theShow to short dateput the long time into startTimefind theShow    -- in field "date"put the long time into endTimeconvert startTime to secondsconvert endTime to secondsanswer "Took " & endTime-startTime & " seconds!"end ifif the result is not empty thenset the cursor to 4set the lockScreen to trueconvert theShow to secondsrepeat for the number of cardsget field "date"convert it to secondsif it >= theShow then exit repeatgo next cardend repeatend ifend planA</script>
  165.     </part>
  166.     <part>
  167.         <id>60</id>
  168.         <type>button</type>
  169.         <visible> <true /> </visible>
  170.         <reserved5> 0 </reserved5>
  171.         <reserved4> 0 </reserved4>
  172.         <reserved3> 0 </reserved3>
  173.         <reserved2> 0 </reserved2>
  174.         <reserved1> 0 </reserved1>
  175.         <enabled> <true /> </enabled>
  176.         <rect>
  177.             <left>402</left>
  178.             <top>187</top>
  179.             <right>474</right>
  180.             <bottom>209</bottom>
  181.         </rect>
  182.         <style>shadow</style>
  183.         <showName> <true /> </showName>
  184.         <highlight> <false /> </highlight>
  185.         <autoHighlight> <true /> </autoHighlight>
  186.         <sharedHighlight> <true /> </sharedHighlight>
  187.         <family>0</family>
  188.         <titleWidth>0</titleWidth>
  189.         <icon>0</icon>
  190.         <textAlign>center</textAlign>
  191.         <font>Chicago</font>
  192.         <textSize>12</textSize>
  193.         <textStyle>plain</textStyle>
  194.         <name>Find...</name>
  195.         <script>--  This button is a quick way to get to the find command.--  It will search everywhere on the cards for whatever you--  want.  This is the way to find a particular song.  If you--  want to find a show by the date, it is faster to use--  the "Go to..." button.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--doMenu "Find..."end mouseUp</script>
  196.     </part>
  197.     <part>
  198.         <id>78</id>
  199.         <type>button</type>
  200.         <visible> <true /> </visible>
  201.         <reserved5> 0 </reserved5>
  202.         <reserved4> 0 </reserved4>
  203.         <reserved3> 0 </reserved3>
  204.         <reserved2> 0 </reserved2>
  205.         <reserved1> 0 </reserved1>
  206.         <enabled> <true /> </enabled>
  207.         <rect>
  208.             <left>402</left>
  209.             <top>212</top>
  210.             <right>474</right>
  211.             <bottom>234</bottom>
  212.         </rect>
  213.         <style>shadow</style>
  214.         <showName> <true /> </showName>
  215.         <highlight> <false /> </highlight>
  216.         <autoHighlight> <true /> </autoHighlight>
  217.         <sharedHighlight> <true /> </sharedHighlight>
  218.         <family>0</family>
  219.         <titleWidth>0</titleWidth>
  220.         <icon>0</icon>
  221.         <textAlign>center</textAlign>
  222.         <font>Chicago</font>
  223.         <textSize>12</textSize>
  224.         <textStyle>plain</textStyle>
  225.         <name>Search...</name>
  226.         <script>--  This button will send you to the standard search utility--  which will allow you to search for a group of songs.  You--  can search for an exact sequence, or any show which has all--  the songs.  This is handy for identifying those "mystery--  tapes". You can even search for a sequence that opens or--  closes a set.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--searchend mouseUp</script>
  227.     </part>
  228.     <part>
  229.         <id>103</id>
  230.         <type>field</type>
  231.         <visible> <false /> </visible>
  232.         <dontWrap> <false /> </dontWrap>
  233.         <dontSearch> <false /> </dontSearch>
  234.         <sharedText> <false /> </sharedText>
  235.         <fixedLineHeight> <false /> </fixedLineHeight>
  236.         <autoTab> <false /> </autoTab>
  237.         <lockText> <true /> </lockText>
  238.         <rect>
  239.             <left>371</left>
  240.             <top>124</top>
  241.             <right>505</right>
  242.             <bottom>271</bottom>
  243.         </rect>
  244.         <style>rectangle</style>
  245.         <autoSelect> <false /> </autoSelect>
  246.         <showLines> <false /> </showLines>
  247.         <wideMargins> <false /> </wideMargins>
  248.         <multipleLines> <false /> </multipleLines>
  249.         <reservedFamily> 0 </reservedFamily>
  250.         <titleWidth>0</titleWidth>
  251.         <icon>0</icon>
  252.         <textAlign>left</textAlign>
  253.         <font>Geneva</font>
  254.         <textSize>12</textSize>
  255.         <textStyle>plain</textStyle>
  256.         <textHeight>16</textHeight>
  257.         <name>utility b</name>
  258.         <script>on mouseUphideUtilityend mouseUp</script>
  259.     </part>
  260.     <part>
  261.         <id>104</id>
  262.         <type>field</type>
  263.         <visible> <false /> </visible>
  264.         <dontWrap> <false /> </dontWrap>
  265.         <dontSearch> <false /> </dontSearch>
  266.         <sharedText> <false /> </sharedText>
  267.         <fixedLineHeight> <false /> </fixedLineHeight>
  268.         <autoTab> <false /> </autoTab>
  269.         <lockText> <true /> </lockText>
  270.         <rect>
  271.             <left>374</left>
  272.             <top>127</top>
  273.             <right>502</right>
  274.             <bottom>268</bottom>
  275.         </rect>
  276.         <style>rectangle</style>
  277.         <autoSelect> <false /> </autoSelect>
  278.         <showLines> <false /> </showLines>
  279.         <wideMargins> <false /> </wideMargins>
  280.         <multipleLines> <false /> </multipleLines>
  281.         <reservedFamily> 0 </reservedFamily>
  282.         <titleWidth>0</titleWidth>
  283.         <icon>0</icon>
  284.         <textAlign>center</textAlign>
  285.         <font>Geneva</font>
  286.         <textSize>10</textSize>
  287.         <textStyle>bold</textStyle>
  288.         <textHeight>13</textHeight>
  289.         <name>utility a</name>
  290.         <script>on mouseUphideUtilityend mouseUp</script>
  291.     </part>
  292.     <part>
  293.         <id>16</id>
  294.         <type>button</type>
  295.         <visible> <true /> </visible>
  296.         <reserved5> 0 </reserved5>
  297.         <reserved4> 0 </reserved4>
  298.         <reserved3> 0 </reserved3>
  299.         <reserved2> 0 </reserved2>
  300.         <reserved1> 0 </reserved1>
  301.         <enabled> <true /> </enabled>
  302.         <rect>
  303.             <left>468</left>
  304.             <top>314</top>
  305.             <right>505</right>
  306.             <bottom>342</bottom>
  307.         </rect>
  308.         <style>transparent</style>
  309.         <showName> <false /> </showName>
  310.         <highlight> <false /> </highlight>
  311.         <autoHighlight> <true /> </autoHighlight>
  312.         <sharedHighlight> <true /> </sharedHighlight>
  313.         <family>0</family>
  314.         <titleWidth>0</titleWidth>
  315.         <icon>1012</icon>
  316.         <textAlign>center</textAlign>
  317.         <font>Chicago</font>
  318.         <textSize>12</textSize>
  319.         <textStyle>plain</textStyle>
  320.         <name>Return</name>
  321.         <script>--  This button pops a card.  It will send you to the last place--  where a card was pushed.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--visual effect iris closepop cardend mouseUp</script>
  322.     </part>
  323.     <part>
  324.         <id>37</id>
  325.         <type>button</type>
  326.         <visible> <false /> </visible>
  327.         <reserved5> 0 </reserved5>
  328.         <reserved4> 0 </reserved4>
  329.         <reserved3> 0 </reserved3>
  330.         <reserved2> 0 </reserved2>
  331.         <reserved1> 0 </reserved1>
  332.         <enabled> <true /> </enabled>
  333.         <rect>
  334.             <left>383</left>
  335.             <top>176</top>
  336.             <right>493</right>
  337.             <bottom>198</bottom>
  338.         </rect>
  339.         <style>rectangle</style>
  340.         <showName> <true /> </showName>
  341.         <highlight> <false /> </highlight>
  342.         <autoHighlight> <true /> </autoHighlight>
  343.         <sharedHighlight> <true /> </sharedHighlight>
  344.         <family>0</family>
  345.         <titleWidth>0</titleWidth>
  346.         <icon>0</icon>
  347.         <textAlign>center</textAlign>
  348.         <font>Chicago</font>
  349.         <textSize>12</textSize>
  350.         <textStyle>plain</textStyle>
  351.         <name>Import Shows...</name>
  352.         <script>--  This button lets you import shows from a text file.--  I use this when I get a bunch of shows from NEWS--  or the WELL.  The shows have to be in a specific format,--  a line with the date and location, followed by songs on--  individual lines, with blank lines separating the sets.--  It will also treat any line with an equal sign (=) in--  column 1 as a comment, stripping off the first character--  and appending it to the comment field.----  It will prompt you pick the input text file.  It will also--  ask you if you want to validate and add the songs as they--  are input. This is a fairly slow process which cross-checks--  each song against the "Songs" stack.  It also adds each song--  into the totals for the year on the song card.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--global yearSongs, showCount, deadDirget FileName( "TEXT" )if it is empty then exit mouseUp--put it into theFileput "Importing file ... " & theFile---- we be inputin'--put 0 into totalSongsput 0 into showCountput false into validateanswer "Validate and add to songs stack? (slow)" with┬¼"Cancel" or "OK" or "Don't Bother"if it is "Cancel" then exit mouseUpif it is "OK" then put true into validateset the cursor to 4-- set the lockScreen to trueimportFile theFile, validateset the lockScreen to falsebeep 3answer "Imported a total of" && showCount && "new shows"end mouseUpon importFile theFile, validateglobal yearSongs, showCount, deadDiropen file theFileput empty into showDateput "" into newSetput "" into notesput 0 into yearSongsput 0 into showSongsunlock screenrepeatshowBusyread from file theFile until returnif it is empty then    -- end-of-fileif showDate is not empty thennewShow showDate, showloc, notes, songList, showSongs, validateend ifexit repeatelse if first char of it is "#" then  -- display commentput it--wait 1 secondnext repeatelse if first char of it is "=" then  -- add to notesdelete first char of itput trim(it) & return after notesnext repeatend ifif it is return thenif showSongs > 0 thenput "" & return into newSetelsenext repeatend ifend if-- need to trim off excess whitespace for Usenet habitsput Trim( it ) & return into recordget first word of recordif offset( char 1 of it, "0123456789" ) > 0 then   -- new cardif showDate is not empty thennewShow showDate, showLoc, notes, songList, showSongs, validateend ifget first word of recordconvert it to short dateput it into showDatedelete first word of recordput empty into last character of recordif char 1 of record is " " then delete char 1 of recordput record into showLocput empty into songListput "" into newSetput "" into notesput 0 into showSongsadd 1 to showCountput "shows: " & showCountelseif record is not return thenput newSet & record after songListput empty into newSetadd 1 to showSongsend ifend ifend repeatclose file theFileend importFileon newShow showDate, showLoc, notes, songList, songCount, doValidatedomenu "New Card"put showDate into field "date"put showLoc into field "location"put notes into field "Comments"put songCount into field "total songs"put songList into field "songs"if doValidate is true thenvalidateShow empty-- addShowend ifend newShow</script>
  353.     </part>
  354.     <part>
  355.         <id>45</id>
  356.         <type>button</type>
  357.         <visible> <true /> </visible>
  358.         <reserved5> 0 </reserved5>
  359.         <reserved4> 0 </reserved4>
  360.         <reserved3> 0 </reserved3>
  361.         <reserved2> 0 </reserved2>
  362.         <reserved1> 0 </reserved1>
  363.         <enabled> <true /> </enabled>
  364.         <rect>
  365.             <left>396</left>
  366.             <top>318</top>
  367.             <right>421</right>
  368.             <bottom>341</bottom>
  369.         </rect>
  370.         <style>transparent</style>
  371.         <showName> <false /> </showName>
  372.         <highlight> <false /> </highlight>
  373.         <autoHighlight> <true /> </autoHighlight>
  374.         <sharedHighlight> <true /> </sharedHighlight>
  375.         <family>0</family>
  376.         <titleWidth>0</titleWidth>
  377.         <icon>20689</icon>
  378.         <textAlign>center</textAlign>
  379.         <font>Chicago</font>
  380.         <textSize>12</textSize>
  381.         <textStyle>plain</textStyle>
  382.         <name>Home</name>
  383.         <script>--  This button sends you to the Home stack.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--lock screengo stack "Dead Utility"playDeadSong "Franklins"go "Home"unlock screen with visual effect iris closeend mouseUp</script>
  384.     </part>
  385.     <part>
  386.         <id>48</id>
  387.         <type>field</type>
  388.         <visible> <true /> </visible>
  389.         <dontWrap> <false /> </dontWrap>
  390.         <dontSearch> <false /> </dontSearch>
  391.         <sharedText> <false /> </sharedText>
  392.         <fixedLineHeight> <true /> </fixedLineHeight>
  393.         <autoTab> <true /> </autoTab>
  394.         <lockText> <false /> </lockText>
  395.         <rect>
  396.             <left>77</left>
  397.             <top>48</top>
  398.             <right>197</right>
  399.             <bottom>67</bottom>
  400.         </rect>
  401.         <style>transparent</style>
  402.         <autoSelect> <false /> </autoSelect>
  403.         <showLines> <false /> </showLines>
  404.         <wideMargins> <false /> </wideMargins>
  405.         <multipleLines> <false /> </multipleLines>
  406.         <reservedFamily> 0 </reservedFamily>
  407.         <titleWidth>0</titleWidth>
  408.         <icon>0</icon>
  409.         <textAlign>left</textAlign>
  410.         <font>Geneva</font>
  411.         <textSize>12</textSize>
  412.         <textStyle>bold</textStyle>
  413.         <textHeight>16</textHeight>
  414.         <name>date</name>
  415.         <script></script>
  416.     </part>
  417.     <part>
  418.         <id>50</id>
  419.         <type>field</type>
  420.         <visible> <true /> </visible>
  421.         <dontWrap> <false /> </dontWrap>
  422.         <dontSearch> <false /> </dontSearch>
  423.         <sharedText> <false /> </sharedText>
  424.         <fixedLineHeight> <true /> </fixedLineHeight>
  425.         <autoTab> <false /> </autoTab>
  426.         <lockText> <true /> </lockText>
  427.         <rect>
  428.             <left>87</left>
  429.             <top>114</top>
  430.             <right>294</right>
  431.             <bottom>333</bottom>
  432.         </rect>
  433.         <style>scrolling</style>
  434.         <autoSelect> <false /> </autoSelect>
  435.         <showLines> <false /> </showLines>
  436.         <wideMargins> <false /> </wideMargins>
  437.         <multipleLines> <false /> </multipleLines>
  438.         <reservedFamily> 0 </reservedFamily>
  439.         <titleWidth>0</titleWidth>
  440.         <icon>0</icon>
  441.         <textAlign>left</textAlign>
  442.         <font>Geneva</font>
  443.         <textSize>9</textSize>
  444.         <textStyle>plain</textStyle>
  445.         <textHeight>12</textHeight>
  446.         <name>songs</name>
  447.         <script>on mouseDownput word 2 of the clickLine into songLineif line songLine of field "songs" is empty thenhideTheHiliteexit mouseDownend ifhiliteLine songLineend mouseDown</script>
  448.     </part>
  449.     <part>
  450.         <id>51</id>
  451.         <type>field</type>
  452.         <visible> <true /> </visible>
  453.         <dontWrap> <false /> </dontWrap>
  454.         <dontSearch> <false /> </dontSearch>
  455.         <sharedText> <false /> </sharedText>
  456.         <fixedLineHeight> <true /> </fixedLineHeight>
  457.         <autoTab> <false /> </autoTab>
  458.         <lockText> <false /> </lockText>
  459.         <rect>
  460.             <left>77</left>
  461.             <top>25</top>
  462.             <right>504</right>
  463.             <bottom>45</bottom>
  464.         </rect>
  465.         <style>transparent</style>
  466.         <autoSelect> <false /> </autoSelect>
  467.         <showLines> <false /> </showLines>
  468.         <wideMargins> <false /> </wideMargins>
  469.         <multipleLines> <false /> </multipleLines>
  470.         <reservedFamily> 0 </reservedFamily>
  471.         <titleWidth>0</titleWidth>
  472.         <icon>0</icon>
  473.         <textAlign>left</textAlign>
  474.         <font>Geneva</font>
  475.         <textSize>12</textSize>
  476.         <textStyle>bold</textStyle>
  477.         <textHeight>16</textHeight>
  478.         <name>location</name>
  479.         <script></script>
  480.     </part>
  481.     <part>
  482.         <id>52</id>
  483.         <type>field</type>
  484.         <visible> <true /> </visible>
  485.         <dontWrap> <false /> </dontWrap>
  486.         <dontSearch> <false /> </dontSearch>
  487.         <sharedText> <false /> </sharedText>
  488.         <fixedLineHeight> <true /> </fixedLineHeight>
  489.         <autoTab> <false /> </autoTab>
  490.         <lockText> <true /> </lockText>
  491.         <rect>
  492.             <left>308</left>
  493.             <top>49</top>
  494.             <right>363</right>
  495.             <bottom>68</bottom>
  496.         </rect>
  497.         <style>transparent</style>
  498.         <autoSelect> <false /> </autoSelect>
  499.         <showLines> <false /> </showLines>
  500.         <wideMargins> <false /> </wideMargins>
  501.         <multipleLines> <false /> </multipleLines>
  502.         <reservedFamily> 0 </reservedFamily>
  503.         <titleWidth>0</titleWidth>
  504.         <icon>0</icon>
  505.         <textAlign>left</textAlign>
  506.         <font>Geneva</font>
  507.         <textSize>12</textSize>
  508.         <textStyle>bold</textStyle>
  509.         <textHeight>16</textHeight>
  510.         <name>total songs</name>
  511.         <script>on mouseUpset the cursor to watchput countSongs() into meend mouseUp</script>
  512.     </part>
  513.     <part>
  514.         <id>54</id>
  515.         <type>button</type>
  516.         <visible> <true /> </visible>
  517.         <reserved5> 0 </reserved5>
  518.         <reserved4> 0 </reserved4>
  519.         <reserved3> 0 </reserved3>
  520.         <reserved2> 0 </reserved2>
  521.         <reserved1> 0 </reserved1>
  522.         <enabled> <true /> </enabled>
  523.         <rect>
  524.             <left>309</left>
  525.             <top>119</top>
  526.             <right>360</right>
  527.             <bottom>151</bottom>
  528.         </rect>
  529.         <style>transparent</style>
  530.         <showName> <false /> </showName>
  531.         <highlight> <false /> </highlight>
  532.         <autoHighlight> <true /> </autoHighlight>
  533.         <sharedHighlight> <true /> </sharedHighlight>
  534.         <family>0</family>
  535.         <titleWidth>0</titleWidth>
  536.         <icon>0</icon>
  537.         <textAlign>center</textAlign>
  538.         <font>Chicago</font>
  539.         <textSize>12</textSize>
  540.         <textStyle>plain</textStyle>
  541.         <name>Tapes</name>
  542.         <script>--  This button sends you to the Dead Tapes stack.  It looks for a--  card for a tape for the current show.  If not found, it will--  offer to create one for you, filling in the date and location.--  You can do that, cancel, or just go to the Tapes stack without--  bothering to create the new card.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--global listDate, labelList, listVenueput field "date" into listDateput field "location" into listVenueput field "songs" into labelListlock screenpush this cardgo to "Dead Tapes"find listDate in field "date"if the result is not empty thenanswer "No tape yet.  Set one up?" with "Cancel" or┬¼"OK" or "Don't Bother"if it is "Cancel" thenpop cardexit mouseUpelse if it is "OK" thendoMenu "New Card"put listDate into field "date"put listVenue into field "location"unlock screenclick at the loc of field "source"end ifend ifend mouseUp</script>
  543.     </part>
  544.     <part>
  545.         <id>55</id>
  546.         <type>button</type>
  547.         <visible> <false /> </visible>
  548.         <reserved5> 0 </reserved5>
  549.         <reserved4> 0 </reserved4>
  550.         <reserved3> 0 </reserved3>
  551.         <reserved2> 0 </reserved2>
  552.         <reserved1> 0 </reserved1>
  553.         <enabled> <true /> </enabled>
  554.         <rect>
  555.             <left>383</left>
  556.             <top>203</top>
  557.             <right>493</right>
  558.             <bottom>225</bottom>
  559.         </rect>
  560.         <style>rectangle</style>
  561.         <showName> <true /> </showName>
  562.         <highlight> <false /> </highlight>
  563.         <autoHighlight> <true /> </autoHighlight>
  564.         <sharedHighlight> <true /> </sharedHighlight>
  565.         <family>0</family>
  566.         <titleWidth>0</titleWidth>
  567.         <icon>0</icon>
  568.         <textAlign>center</textAlign>
  569.         <font>Chicago</font>
  570.         <textSize>12</textSize>
  571.         <textStyle>plain</textStyle>
  572.         <name>Export Shows...</name>
  573.         <script>--  This button lets you dump a collection of shows to a--  test file.  If you are passing the stacks around, it--  is actually more compact to pass around and empty--  shows stack and all the songs in text files, as the--  text files compress better.----  The function lets you dump on year or all years, to--  either a file or a list on the screen if you really--  want.  You can select to dump just the date/location, with--  the song lists as well, and/or with the comments field.--  The format written is the acceptable input for the Import--  function.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--push this cardset the lockScreen to truego stack "Dead Utility"go to card "dump shows"set the lockScreen to falseend mouseUp</script>
  574.     </part>
  575.     <part>
  576.         <id>56</id>
  577.         <type>button</type>
  578.         <visible> <false /> </visible>
  579.         <reserved5> 0 </reserved5>
  580.         <reserved4> 0 </reserved4>
  581.         <reserved3> 0 </reserved3>
  582.         <reserved2> 0 </reserved2>
  583.         <reserved1> 0 </reserved1>
  584.         <enabled> <true /> </enabled>
  585.         <rect>
  586.             <left>383</left>
  587.             <top>149</top>
  588.             <right>493</right>
  589.             <bottom>171</bottom>
  590.         </rect>
  591.         <style>rectangle</style>
  592.         <showName> <true /> </showName>
  593.         <highlight> <false /> </highlight>
  594.         <autoHighlight> <true /> </autoHighlight>
  595.         <sharedHighlight> <true /> </sharedHighlight>
  596.         <family>0</family>
  597.         <titleWidth>0</titleWidth>
  598.         <icon>0</icon>
  599.         <textAlign>center</textAlign>
  600.         <font>Chicago</font>
  601.         <textSize>12</textSize>
  602.         <textStyle>plain</textStyle>
  603.         <name>Delete Shows...</name>
  604.         <script>--  This button allows you to specify a block or range--  of shows to delete.  This is handy if you want to--  replace a block (like a years worth) with a text file--  which you know to be more acurate than what you already--  have.----  IMPORTANT!!  You should make sure your stack is sorted--  by date before invoking this feature.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--ask "delete from..."if the result is "Cancel" then exit mouseUpif it is not "." then convert it to short dateput it into fromCardask "...up to..." with fromCardif the result is "Cancel" then exit mouseUpconvert it to short dateput it into uptoCardif fromCard is "." thenput bkgnd field "date" into fromCardelsefind fromCard in bkgnd field "date"if the result is not empty thenanswer "None found!"exit mouseUpend ifend ifconvert fromCard to secondsconvert uptoCard to secondsput true into keepAskingrepeatget bkgnd field "date"convert it to secondsif it > uptoCard  or it < fromCard then exit repeatif keepAsking is true thenanswer "Continue..." with "OK" or "Cancel" or "Don't bug me"if the result is "Cancel" then exit repeatif it is "Don't bug me" then put false into keepAskingend ifdoMenu "Delete Card"end repeatend mouseUp</script>
  605.     </part>
  606.     <part>
  607.         <id>58</id>
  608.         <type>button</type>
  609.         <visible> <true /> </visible>
  610.         <reserved5> 0 </reserved5>
  611.         <reserved4> 0 </reserved4>
  612.         <reserved3> 0 </reserved3>
  613.         <reserved2> 0 </reserved2>
  614.         <reserved1> 0 </reserved1>
  615.         <enabled> <true /> </enabled>
  616.         <rect>
  617.             <left>411</left>
  618.             <top>66</top>
  619.             <right>466</right>
  620.             <bottom>122</bottom>
  621.         </rect>
  622.         <style>transparent</style>
  623.         <showName> <false /> </showName>
  624.         <highlight> <false /> </highlight>
  625.         <autoHighlight> <true /> </autoHighlight>
  626.         <sharedHighlight> <true /> </sharedHighlight>
  627.         <family>0</family>
  628.         <titleWidth>0</titleWidth>
  629.         <icon>0</icon>
  630.         <textAlign>center</textAlign>
  631.         <font>Chicago</font>
  632.         <textSize>12</textSize>
  633.         <textStyle>plain</textStyle>
  634.         <name>hey now</name>
  635.         <script>--  This button plays a random tune.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--singAndDanceend mouseUp</script>
  636.     </part>
  637.     <part>
  638.         <id>59</id>
  639.         <type>button</type>
  640.         <visible> <true /> </visible>
  641.         <reserved5> 0 </reserved5>
  642.         <reserved4> 0 </reserved4>
  643.         <reserved3> 0 </reserved3>
  644.         <reserved2> 0 </reserved2>
  645.         <reserved1> 0 </reserved1>
  646.         <enabled> <true /> </enabled>
  647.         <rect>
  648.             <left>21</left>
  649.             <top>195</top>
  650.             <right>51</right>
  651.             <bottom>238</bottom>
  652.         </rect>
  653.         <style>transparent</style>
  654.         <showName> <false /> </showName>
  655.         <highlight> <false /> </highlight>
  656.         <autoHighlight> <true /> </autoHighlight>
  657.         <sharedHighlight> <true /> </sharedHighlight>
  658.         <family>0</family>
  659.         <titleWidth>0</titleWidth>
  660.         <icon>0</icon>
  661.         <textAlign>center</textAlign>
  662.         <font>Chicago</font>
  663.         <textSize>12</textSize>
  664.         <textStyle>plain</textStyle>
  665.         <name>bbd</name>
  666.         <script>--  This button will tell you what I think of the Grateful Dead.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if---- not any more...  go to bg script to send you to wherever-- it decides.  Makes it easy to keep the sounds wherever you want.-- go to "Dead Utility"playDead "bbd"dance 25end mouseUp</script>
  667.     </part>
  668.     <part>
  669.         <id>63</id>
  670.         <type>button</type>
  671.         <visible> <true /> </visible>
  672.         <reserved5> 0 </reserved5>
  673.         <reserved4> 0 </reserved4>
  674.         <reserved3> 0 </reserved3>
  675.         <reserved2> 0 </reserved2>
  676.         <reserved1> 0 </reserved1>
  677.         <enabled> <true /> </enabled>
  678.         <rect>
  679.             <left>318</left>
  680.             <top>160</top>
  681.             <right>353</right>
  682.             <bottom>190</bottom>
  683.         </rect>
  684.         <style>transparent</style>
  685.         <showName> <false /> </showName>
  686.         <highlight> <false /> </highlight>
  687.         <autoHighlight> <true /> </autoHighlight>
  688.         <sharedHighlight> <true /> </sharedHighlight>
  689.         <family>0</family>
  690.         <titleWidth>0</titleWidth>
  691.         <icon>128</icon>
  692.         <textAlign>center</textAlign>
  693.         <font>Chicago</font>
  694.         <textSize>12</textSize>
  695.         <textStyle>plain</textStyle>
  696.         <name>Labels</name>
  697.         <script>--  This button sends you to the Dead Labels stack.  It looks for a--  card with a label for the current show.  If not found, it will--  offer to create a set of labels for you, filling in the date,--  location, and the songs from sets 1 and two. The current format--  starts the second set on the second label card.  It puts the--  tape flip after the sixth song for each set.----  If you don't want to create the labels, you can cancel, or--  just go to the Tapes stack without bothering to create the--  new card.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--global listDate, labelList, listVenueput field "date" into listDateput field "location" into listVenueput field "songs" into labelList--push this cardset the lockScreen to truego to stack "Dead Labels"find listDate in field "date"--  go card cardNameif the result is not empty thenanswer "No labels.  Shall we make 'em?" with "Cancel"┬¼or "Don't Bother!" or "OK"if it is "Cancel" thenpop cardexit mouseUpelse if it is "OK" thennewLabels( listDate )end ifend ifend mouseUpon fooput empty into songListset the cursor to 4go to stack "Dead Shows"find cardName in field "date"if the result is empty thenput field "songs" into songListend ifgo to stack "Dead Labels"doMenu "New Card"set name of this card to cardNameput cardName into field "date"put "1" into field setput Venue into field "location"put Venue into field "side location"doMenu "Copy Card"doMenu "Paste Card"put "2" into field "set"go previf songList is not empty thenput 0 into firstSetput 0 into secondSetput 1 into songNumput the number of lines in songList into totalSongs-- do first set labelput "side A" into tapeSiderepeatput line songNum of songList into thisSongadd 1 to songNumif thisSong is empty thenexit repeatend ifput thisSong & return after field tapeSideadd 1 to firstSetif firstSet > 6 thenput "side B" into tapeSideend ifend repeat-- do second set labelgo to next cardput "side A" into tapeSiderepeatput line songNum of songList into thisSongput thisSong & return after field tapeSideadd 1 to songNumadd 1 to secondSetif songNum > totalSongs thenexit repeatend ifif secondSet > 6 thenput "side B" into tapeSideend ifend repeatgo to previous cardend iftabKeytabKeyend foo</script>
  698.     </part>
  699.     <part>
  700.         <id>65</id>
  701.         <type>button</type>
  702.         <visible> <true /> </visible>
  703.         <reserved5> 0 </reserved5>
  704.         <reserved4> 0 </reserved4>
  705.         <reserved3> 0 </reserved3>
  706.         <reserved2> 0 </reserved2>
  707.         <reserved1> 0 </reserved1>
  708.         <enabled> <true /> </enabled>
  709.         <rect>
  710.             <left>5</left>
  711.             <top>292</top>
  712.             <right>76</right>
  713.             <bottom>314</bottom>
  714.         </rect>
  715.         <style>shadow</style>
  716.         <showName> <true /> </showName>
  717.         <highlight> <false /> </highlight>
  718.         <autoHighlight> <true /> </autoHighlight>
  719.         <sharedHighlight> <true /> </sharedHighlight>
  720.         <family>0</family>
  721.         <titleWidth>0</titleWidth>
  722.         <icon>0</icon>
  723.         <textAlign>center</textAlign>
  724.         <font>Chicago</font>
  725.         <textSize>12</textSize>
  726.         <textStyle>plain</textStyle>
  727.         <name>Validate</name>
  728.         <script>--  This button will validate each song in the show list--  against the Songs stack for correctness.  If it--  does not find a particular title, it will search the--  "Aka" field to see if there is some other name by which--  the song might be known, and will then allow you to--  convert it to the recorded title in Songs.  If it--  can't find the song at all, it will allow you to--  skip it or correct it.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--validateShow emptyend mouseUp</script>
  729.     </part>
  730.     <part>
  731.         <id>69</id>
  732.         <type>button</type>
  733.         <visible> <false /> </visible>
  734.         <reserved5> 0 </reserved5>
  735.         <reserved4> 0 </reserved4>
  736.         <reserved3> 0 </reserved3>
  737.         <reserved2> 0 </reserved2>
  738.         <reserved1> 0 </reserved1>
  739.         <enabled> <true /> </enabled>
  740.         <rect>
  741.             <left>70</left>
  742.             <top>318</top>
  743.             <right>88</right>
  744.             <bottom>334</bottom>
  745.         </rect>
  746.         <style>transparent</style>
  747.         <showName> <false /> </showName>
  748.         <highlight> <false /> </highlight>
  749.         <autoHighlight> <false /> </autoHighlight>
  750.         <sharedHighlight> <true /> </sharedHighlight>
  751.         <family>0</family>
  752.         <titleWidth>0</titleWidth>
  753.         <icon>30171</icon>
  754.         <textAlign>center</textAlign>
  755.         <font>Chicago</font>
  756.         <textSize>12</textSize>
  757.         <textStyle>plain</textStyle>
  758.         <name>Last Time</name>
  759.         <script>--  This button will send you to the most recently previous--  show in which the currently selected song was played.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--put false into tellDiffif the optionKey is down then put true into tellDiffset the cursor to 4set the lockScreen to trueput field id 71 into thisSongput the number of this card into origNumput origNum into backUpif origNum > 50 thengo card origNum - 10    -- try the last 10 shows...findSong thisSongif the number of this card is origNum then    -- keep trying back furtherrepeat foreversubtract 100 from backUpif backUp < 0 then exit repeatgo card backUpfindSong thisSongif the number of this card is not origNum then exit repeatend repeatend ifend ifif the number of this card is origNum thengo card 1   --  oh well, nice try.  All the way backfindSong thisSongif the number of this card is origNum thenanswer "This is the first time!"setSongHilite thisSongexit mouseUpend ifend ifput the number of this card into foundNum-- now march forward to the originalrepeat foreverfindSong thisSongif the number of this card is origNum thengo card foundNumsetSongHilite thisSongif tellDiff is true thenset the lockScreen to falseanswer "It's been " & (origNum - the number of this card) & " shows!"end ifexit mouseUpend ifput the number of this card into foundNumgo next cardend repeatend mouseUp</script>
  760.     </part>
  761.     <part>
  762.         <id>70</id>
  763.         <type>button</type>
  764.         <visible> <false /> </visible>
  765.         <reserved5> 0 </reserved5>
  766.         <reserved4> 0 </reserved4>
  767.         <reserved3> 0 </reserved3>
  768.         <reserved2> 0 </reserved2>
  769.         <reserved1> 0 </reserved1>
  770.         <enabled> <true /> </enabled>
  771.         <rect>
  772.             <left>293</left>
  773.             <top>318</top>
  774.             <right>307</right>
  775.             <bottom>334</bottom>
  776.         </rect>
  777.         <style>transparent</style>
  778.         <showName> <false /> </showName>
  779.         <highlight> <false /> </highlight>
  780.         <autoHighlight> <false /> </autoHighlight>
  781.         <sharedHighlight> <true /> </sharedHighlight>
  782.         <family>0</family>
  783.         <titleWidth>0</titleWidth>
  784.         <icon>2715</icon>
  785.         <textAlign>center</textAlign>
  786.         <font>Chicago</font>
  787.         <textSize>12</textSize>
  788.         <textStyle>plain</textStyle>
  789.         <name>Next Time</name>
  790.         <script>--  This button will send you to the next show in which the--  currently selected song was played.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--put false into tellDiffif the optionKey is down then put true into tellDiffset the cursor to watchset the lockScreen to trueput bg field "selected" into theSongput the number of this card into origNumrepeat forevergo next cardfindSong theSongif the number of this card <= origNum thengo card origNumanswer "This is the last time it was played!"setSongHilite theSongexit mouseUpend if--go prev card    -- this is the only way I can find...go next card    -- ... to clear the selection rectangle from the find--setSongHilite theSongset the lockScreen to falseselect emptyif tellDiff is true thenanswer "It's been " & (the number of this card - origNum) & " shows!"end ifexit mouseUp--    end ifend repeatbeep 1end mouseUp</script>
  791.     </part>
  792.     <part>
  793.         <id>71</id>
  794.         <type>field</type>
  795.         <visible> <false /> </visible>
  796.         <dontWrap> <false /> </dontWrap>
  797.         <dontSearch> <false /> </dontSearch>
  798.         <sharedText> <false /> </sharedText>
  799.         <fixedLineHeight> <true /> </fixedLineHeight>
  800.         <autoTab> <false /> </autoTab>
  801.         <lockText> <true /> </lockText>
  802.         <rect>
  803.             <left>88</left>
  804.             <top>319</top>
  805.             <right>276</right>
  806.             <bottom>333</bottom>
  807.         </rect>
  808.         <style>rectangle</style>
  809.         <autoSelect> <false /> </autoSelect>
  810.         <showLines> <false /> </showLines>
  811.         <wideMargins> <false /> </wideMargins>
  812.         <multipleLines> <false /> </multipleLines>
  813.         <reservedFamily> 0 </reservedFamily>
  814.         <titleWidth>0</titleWidth>
  815.         <icon>0</icon>
  816.         <textAlign>left</textAlign>
  817.         <font>Geneva</font>
  818.         <textSize>9</textSize>
  819.         <textStyle>bold</textStyle>
  820.         <textHeight>12</textHeight>
  821.         <name>selected</name>
  822.         <script>on mouseDownset the lockScreen to trueset cursor to watchpush this cardput field "selected" into theSongif theSong is not empty thengo to stack "Songs"find theSong in field "title"if the result is  empty thenput the id of this card into firstCardrepeat foreverif field "title" is theSong then exit mouseDowngo next cardfind theSong in field "title"if the id of this card is firstCard thenplay boingset the lockScreen to trueput "Well, it's close... :-}"exit mouseDownend ifend repeatend ifend ifplay "boing"pop cardend mouseDown</script>
  823.     </part>
  824.     <part>
  825.         <id>74</id>
  826.         <type>button</type>
  827.         <visible> <true /> </visible>
  828.         <reserved5> 0 </reserved5>
  829.         <reserved4> 0 </reserved4>
  830.         <reserved3> 0 </reserved3>
  831.         <reserved2> 0 </reserved2>
  832.         <reserved1> 0 </reserved1>
  833.         <enabled> <true /> </enabled>
  834.         <rect>
  835.             <left>17</left>
  836.             <top>244</top>
  837.             <right>64</right>
  838.             <bottom>266</bottom>
  839.         </rect>
  840.         <style>shadow</style>
  841.         <showName> <true /> </showName>
  842.         <highlight> <false /> </highlight>
  843.         <autoHighlight> <false /> </autoHighlight>
  844.         <sharedHighlight> <true /> </sharedHighlight>
  845.         <family>0</family>
  846.         <titleWidth>0</titleWidth>
  847.         <icon>0</icon>
  848.         <textAlign>center</textAlign>
  849.         <font>Chicago</font>
  850.         <textSize>12</textSize>
  851.         <textStyle>plain</textStyle>
  852.         <name>Edit</name>
  853.         <script>--  This button unlocks the songs field for entry/editing.--  When the field is re-locked the song count field--  is automatically re-counted.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--if the lockText of field "songs" is true thenset the hilite of the target to trueset the lockText of field "songs" to falseput (item 1 of the rect of field "songs") +1 & "," &┬¼(item 2 of the rect of field "songs") + 1 into theLocclick at theLocelseset the hilite of the target to falseset the lockText of field "songs" to trueput countSongs() into field "total songs"end ifend mouseUp</script>
  854.     </part>
  855.     <part>
  856.         <id>75</id>
  857.         <type>button</type>
  858.         <visible> <true /> </visible>
  859.         <reserved5> 0 </reserved5>
  860.         <reserved4> 0 </reserved4>
  861.         <reserved3> 0 </reserved3>
  862.         <reserved2> 0 </reserved2>
  863.         <reserved1> 0 </reserved1>
  864.         <enabled> <true /> </enabled>
  865.         <rect>
  866.             <left>369</left>
  867.             <top>317</top>
  868.             <right>393</right>
  869.             <bottom>341</bottom>
  870.         </rect>
  871.         <style>transparent</style>
  872.         <showName> <false /> </showName>
  873.         <highlight> <false /> </highlight>
  874.         <autoHighlight> <true /> </autoHighlight>
  875.         <sharedHighlight> <true /> </sharedHighlight>
  876.         <family>0</family>
  877.         <titleWidth>0</titleWidth>
  878.         <icon>26635</icon>
  879.         <textAlign>center</textAlign>
  880.         <font>Chicago</font>
  881.         <textSize>12</textSize>
  882.         <textStyle>plain</textStyle>
  883.         <name>Help</name>
  884.         <script>--  This button will get you general help... an overview--  of the cardon mouseUppush this cardgo card "Shows Help" of stack "Dead Utility"playDead "help"end mouseUp</script>
  885.     </part>
  886.     <part>
  887.         <id>77</id>
  888.         <type>button</type>
  889.         <visible> <true /> </visible>
  890.         <reserved5> 0 </reserved5>
  891.         <reserved4> 0 </reserved4>
  892.         <reserved3> 0 </reserved3>
  893.         <reserved2> 0 </reserved2>
  894.         <reserved1> 0 </reserved1>
  895.         <enabled> <true /> </enabled>
  896.         <rect>
  897.             <left>11</left>
  898.             <top>268</top>
  899.             <right>70</right>
  900.             <bottom>290</bottom>
  901.         </rect>
  902.         <style>shadow</style>
  903.         <showName> <true /> </showName>
  904.         <highlight> <false /> </highlight>
  905.         <autoHighlight> <true /> </autoHighlight>
  906.         <sharedHighlight> <true /> </sharedHighlight>
  907.         <family>0</family>
  908.         <titleWidth>0</titleWidth>
  909.         <icon>0</icon>
  910.         <textAlign>center</textAlign>
  911.         <font>Chicago</font>
  912.         <textSize>12</textSize>
  913.         <textStyle>plain</textStyle>
  914.         <name>Add...</name>
  915.         <script>--  This button will increment the syear count by one for each--  unique song in the shows list.  It takes a little time.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--if the hilite of bg button "Don't Count" is true thenput "This show doesn't count!!!"exit mouseUpend ifanswer "Add these songs to the songs totals?"┬¼with "OK" or "Cancel"if it is "OK" thenlock screenset the cursor to 4addShowend ifend mouseUp</script>
  916.     </part>
  917.     <part>
  918.         <id>81</id>
  919.         <type>field</type>
  920.         <visible> <true /> </visible>
  921.         <dontWrap> <false /> </dontWrap>
  922.         <dontSearch> <false /> </dontSearch>
  923.         <sharedText> <false /> </sharedText>
  924.         <fixedLineHeight> <true /> </fixedLineHeight>
  925.         <autoTab> <false /> </autoTab>
  926.         <lockText> <true /> </lockText>
  927.         <rect>
  928.             <left>479</left>
  929.             <top>47</top>
  930.             <right>495</right>
  931.             <bottom>64</bottom>
  932.         </rect>
  933.         <style>rectangle</style>
  934.         <autoSelect> <false /> </autoSelect>
  935.         <showLines> <false /> </showLines>
  936.         <wideMargins> <false /> </wideMargins>
  937.         <multipleLines> <false /> </multipleLines>
  938.         <reservedFamily> 0 </reservedFamily>
  939.         <titleWidth>0</titleWidth>
  940.         <icon>0</icon>
  941.         <textAlign>left</textAlign>
  942.         <font>Geneva</font>
  943.         <textSize>12</textSize>
  944.         <textStyle>bold</textStyle>
  945.         <textHeight>16</textHeight>
  946.         <name>I Was There</name>
  947.         <script>on mouseUpif target is empty thenput "X" into the targetelseput empty into the targetend ifend mouseUp</script>
  948.     </part>
  949.     <part>
  950.         <id>83</id>
  951.         <type>button</type>
  952.         <visible> <true /> </visible>
  953.         <reserved5> 0 </reserved5>
  954.         <reserved4> 0 </reserved4>
  955.         <reserved3> 0 </reserved3>
  956.         <reserved2> 0 </reserved2>
  957.         <reserved1> 0 </reserved1>
  958.         <enabled> <true /> </enabled>
  959.         <rect>
  960.             <left>42</left>
  961.             <top>27</top>
  962.             <right>60</right>
  963.             <bottom>43</bottom>
  964.         </rect>
  965.         <style>transparent</style>
  966.         <showName> <false /> </showName>
  967.         <highlight> <false /> </highlight>
  968.         <autoHighlight> <true /> </autoHighlight>
  969.         <sharedHighlight> <false /> </sharedHighlight>
  970.         <family>0</family>
  971.         <titleWidth>0</titleWidth>
  972.         <icon>30171</icon>
  973.         <textAlign>center</textAlign>
  974.         <font>Chicago</font>
  975.         <textSize>12</textSize>
  976.         <textStyle>plain</textStyle>
  977.         <name>Last Time Loc</name>
  978.         <script>--  This button will send you to the last show--  played at this venue.  It relies on the consistancy--  of names used in the Place field, which is--  admitedly poor at this time.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--put false into tellDiffif the optionKey is down then put true into tellDiffset the cursor to watchlock screenput item 1 of field "location" into thisLocput the number of this card into origNumput origNum into backUpput "Finding last time played at " & thisLocif origNum > 50 thengo card origNum - 10    -- try the last 10 shows...find string thisLoc in field "location"if the number of this card is origNum then    -- keep trying back furtherrepeat foreversubtract 100 from backUpif backUp < 0 then exit repeatgo card backUpfind string thisLoc in field "location"if the number of this card is not origNum then exit repeatend repeatend ifend ifif the number of this card is origNum thengo card 1   --  oh well, nice try.  All the way backfind string thisLoc in field "location"if the number of this card is origNum thenanswer "This is the first time!"hide messageexit mouseUpend ifend ifput the number of this card into foundNum-- now march forward to the originalrepeat foreverfind string thisLoc in field "location"if the number of this card is origNum thengo card foundNumunlock screen with visual effect dissolveif tellDiff is true thenanswer "It's been " & (origNum - the number of this card) & " shows!"end ifhide messageexit mouseUpend ifput the number of this card into foundNumgo next cardend repeatend mouseUp</script>
  979.     </part>
  980.     <part>
  981.         <id>84</id>
  982.         <type>button</type>
  983.         <visible> <true /> </visible>
  984.         <reserved5> 0 </reserved5>
  985.         <reserved4> 0 </reserved4>
  986.         <reserved3> 0 </reserved3>
  987.         <reserved2> 0 </reserved2>
  988.         <reserved1> 0 </reserved1>
  989.         <enabled> <true /> </enabled>
  990.         <rect>
  991.             <left>61</left>
  992.             <top>27</top>
  993.             <right>75</right>
  994.             <bottom>43</bottom>
  995.         </rect>
  996.         <style>transparent</style>
  997.         <showName> <false /> </showName>
  998.         <highlight> <false /> </highlight>
  999.         <autoHighlight> <true /> </autoHighlight>
  1000.         <sharedHighlight> <false /> </sharedHighlight>
  1001.         <family>0</family>
  1002.         <titleWidth>0</titleWidth>
  1003.         <icon>2715</icon>
  1004.         <textAlign>center</textAlign>
  1005.         <font>Chicago</font>
  1006.         <textSize>12</textSize>
  1007.         <textStyle>plain</textStyle>
  1008.         <name>Next Time Loc</name>
  1009.         <script>--  This button will send you to the next show to be--  played at this venue.  It relies on the consistancy--  of names used in the Place field, which is--  admitedly poor at this time.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--put false into tellDiffif the optionKey is down then put true into tellDiffset the cursor to 4lock screenput item 1 of field "location" into nextLocput the number of this card into origNumput "Finding next time played at " & nextLocrepeat forevergo next cardfind string nextLoc in field "location"if the number of this card <= origNum thengo card origNumanswer "This is the last time it was played!"hide messageexit mouseUpend if--    if theSong is in field "songs" then  -- not necessary with find stringunlock screen with visual effect dissolveif tellDiff is true thenanswer "It's been " & (the number of this card - origNum) & " shows!"end ifhide messageexit mouseUp--    end ifend repeatend mouseUp</script>
  1010.     </part>
  1011.     <part>
  1012.         <id>88</id>
  1013.         <type>field</type>
  1014.         <visible> <true /> </visible>
  1015.         <dontWrap> <false /> </dontWrap>
  1016.         <dontSearch> <false /> </dontSearch>
  1017.         <sharedText> <false /> </sharedText>
  1018.         <fixedLineHeight> <true /> </fixedLineHeight>
  1019.         <autoTab> <true /> </autoTab>
  1020.         <lockText> <false /> </lockText>
  1021.         <rect>
  1022.             <left>85</left>
  1023.             <top>69</top>
  1024.             <right>372</right>
  1025.             <bottom>108</bottom>
  1026.         </rect>
  1027.         <style>transparent</style>
  1028.         <autoSelect> <false /> </autoSelect>
  1029.         <showLines> <false /> </showLines>
  1030.         <wideMargins> <false /> </wideMargins>
  1031.         <multipleLines> <false /> </multipleLines>
  1032.         <reservedFamily> 0 </reservedFamily>
  1033.         <titleWidth>0</titleWidth>
  1034.         <icon>0</icon>
  1035.         <textAlign>left</textAlign>
  1036.         <font></font>
  1037.         <textSize>9</textSize>
  1038.         <textStyle>plain</textStyle>
  1039.         <textHeight>12</textHeight>
  1040.         <name>comments</name>
  1041.         <script></script>
  1042.     </part>
  1043.     <part>
  1044.         <id>92</id>
  1045.         <type>button</type>
  1046.         <visible> <true /> </visible>
  1047.         <reserved5> 0 </reserved5>
  1048.         <reserved4> 0 </reserved4>
  1049.         <reserved3> 0 </reserved3>
  1050.         <reserved2> 0 </reserved2>
  1051.         <reserved1> 0 </reserved1>
  1052.         <enabled> <true /> </enabled>
  1053.         <rect>
  1054.             <left>425</left>
  1055.             <top>308</top>
  1056.             <right>464</right>
  1057.             <bottom>342</bottom>
  1058.         </rect>
  1059.         <style>transparent</style>
  1060.         <showName> <false /> </showName>
  1061.         <highlight> <false /> </highlight>
  1062.         <autoHighlight> <true /> </autoHighlight>
  1063.         <sharedHighlight> <true /> </sharedHighlight>
  1064.         <family>0</family>
  1065.         <titleWidth>0</titleWidth>
  1066.         <icon>20186</icon>
  1067.         <textAlign>center</textAlign>
  1068.         <font>Chicago</font>
  1069.         <textSize>12</textSize>
  1070.         <textStyle>plain</textStyle>
  1071.         <name>Sort</name>
  1072.         <script>--  This button will sort the cards in the stack by show date--  It also re-builds the internal card map that helps--  Stack-O-Dead find the first show of a given year.  Use--  this button whenever you add or delete any cards, even if--  you don't thing you changed the sorted order.on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--sort datetime by field "date"put "Setting up first card map"setUpFirstOfYearend mouseUp</script>
  1073.     </part>
  1074.     <part>
  1075.         <id>94</id>
  1076.         <type>button</type>
  1077.         <visible> <true /> </visible>
  1078.         <reserved5> 0 </reserved5>
  1079.         <reserved4> 0 </reserved4>
  1080.         <reserved3> 0 </reserved3>
  1081.         <reserved2> 0 </reserved2>
  1082.         <reserved1> 0 </reserved1>
  1083.         <enabled> <true /> </enabled>
  1084.         <rect>
  1085.             <left>0</left>
  1086.             <top>19</top>
  1087.             <right>20</right>
  1088.             <bottom>40</bottom>
  1089.         </rect>
  1090.         <style>transparent</style>
  1091.         <showName> <false /> </showName>
  1092.         <highlight> <false /> </highlight>
  1093.         <autoHighlight> <true /> </autoHighlight>
  1094.         <sharedHighlight> <false /> </sharedHighlight>
  1095.         <family>0</family>
  1096.         <titleWidth>0</titleWidth>
  1097.         <icon>0</icon>
  1098.         <textAlign>center</textAlign>
  1099.         <font>Chicago</font>
  1100.         <textSize>12</textSize>
  1101.         <textStyle>plain</textStyle>
  1102.         <name>make new card</name>
  1103.         <script>--  So you found it!!--  This button is a convenience for creating a new--  show card.  It creates a new card and puts you in--  the date field.on mouseUpdoMenu "New Card"click at the loc of field "date"end mouseUp</script>
  1104.     </part>
  1105.     <part>
  1106.         <id>90</id>
  1107.         <type>field</type>
  1108.         <visible> <false /> </visible>
  1109.         <dontWrap> <false /> </dontWrap>
  1110.         <dontSearch> <false /> </dontSearch>
  1111.         <sharedText> <true /> </sharedText>
  1112.         <fixedLineHeight> <false /> </fixedLineHeight>
  1113.         <autoTab> <false /> </autoTab>
  1114.         <lockText> <true /> </lockText>
  1115.         <rect>
  1116.             <left>4</left>
  1117.             <top>231</top>
  1118.             <right>344</right>
  1119.             <bottom>336</bottom>
  1120.         </rect>
  1121.         <style>rectangle</style>
  1122.         <autoSelect> <false /> </autoSelect>
  1123.         <showLines> <false /> </showLines>
  1124.         <wideMargins> <true /> </wideMargins>
  1125.         <multipleLines> <false /> </multipleLines>
  1126.         <reservedFamily> 0 </reservedFamily>
  1127.         <titleWidth>0</titleWidth>
  1128.         <icon>0</icon>
  1129.         <textAlign>left</textAlign>
  1130.         <font>Geneva</font>
  1131.         <textSize>10</textSize>
  1132.         <textStyle>bold</textStyle>
  1133.         <textHeight>13</textHeight>
  1134.         <name>misc commands</name>
  1135.         <script>--  Eventually this mouse up script will accept a click on a line--  and execute the command, or at least put it...on mouseUphide the targetend mouseUp</script>
  1136.     </part>
  1137.     <part>
  1138.         <id>98</id>
  1139.         <type>field</type>
  1140.         <visible> <false /> </visible>
  1141.         <dontWrap> <false /> </dontWrap>
  1142.         <dontSearch> <true /> </dontSearch>
  1143.         <sharedText> <true /> </sharedText>
  1144.         <fixedLineHeight> <false /> </fixedLineHeight>
  1145.         <autoTab> <false /> </autoTab>
  1146.         <lockText> <true /> </lockText>
  1147.         <rect>
  1148.             <left>30</left>
  1149.             <top>103</top>
  1150.             <right>449</right>
  1151.             <bottom>318</bottom>
  1152.         </rect>
  1153.         <style>scrolling</style>
  1154.         <autoSelect> <false /> </autoSelect>
  1155.         <showLines> <false /> </showLines>
  1156.         <wideMargins> <true /> </wideMargins>
  1157.         <multipleLines> <false /> </multipleLines>
  1158.         <reservedFamily> 0 </reservedFamily>
  1159.         <titleWidth>0</titleWidth>
  1160.         <icon>0</icon>
  1161.         <textAlign>left</textAlign>
  1162.         <font>Geneva</font>
  1163.         <textSize>10</textSize>
  1164.         <textStyle>bold</textStyle>
  1165.         <textHeight>13</textHeight>
  1166.         <name>help text</name>
  1167.         <script>on mouseUplock screenhide meunlock screen with visual effect dissolve fastend mouseUp</script>
  1168.     </part>
  1169.     <part>
  1170.         <id>101</id>
  1171.         <type>button</type>
  1172.         <visible> <true /> </visible>
  1173.         <reserved5> 0 </reserved5>
  1174.         <reserved4> 0 </reserved4>
  1175.         <reserved3> 0 </reserved3>
  1176.         <reserved2> 0 </reserved2>
  1177.         <reserved1> 0 </reserved1>
  1178.         <enabled> <true /> </enabled>
  1179.         <rect>
  1180.             <left>5</left>
  1181.             <top>317</top>
  1182.             <right>84</right>
  1183.             <bottom>337</bottom>
  1184.         </rect>
  1185.         <style>checkbox</style>
  1186.         <showName> <true /> </showName>
  1187.         <highlight> <false /> </highlight>
  1188.         <autoHighlight> <false /> </autoHighlight>
  1189.         <sharedHighlight> <false /> </sharedHighlight>
  1190.         <family>0</family>
  1191.         <titleWidth>0</titleWidth>
  1192.         <icon>0</icon>
  1193.         <textAlign>center</textAlign>
  1194.         <font></font>
  1195.         <textSize>9</textSize>
  1196.         <textStyle>condense</textStyle>
  1197.         <textStyle>bold</textStyle>
  1198.         <name>Don't Count</name>
  1199.         <script>--  This field indicates that the show is not to be used--  when calculating the year counts for songs, or in any--  of the statistics.  It is generally set for things like--  an appearance of Bob and Jerry on Letterman or something--  which is notable here, but not really part of the Dead--  statistics.----  I do usually count things like the Saturday Night Live--  appearnaces since it is the Dead, and it was a live--  performance before an audience.  DeadBase does not always--  count such performances.  I also usually count the benefit--  type gigs where maybe one or two of the band members are not--  there, but only if it's mostly the Dead, and the material--  is generally from the "Dead Songbook".on mouseUpif the commandKey is down thendoHelpexit mouseUpend if--set the hilite of me to not the hilite of meif the hilite of me is true thenput "Statistically speaking, this show won't be counted."end ifend mouseUp</script>
  1200.     </part>
  1201.     <part>
  1202.         <id>95</id>
  1203.         <type>field</type>
  1204.         <visible> <false /> </visible>
  1205.         <dontWrap> <false /> </dontWrap>
  1206.         <dontSearch> <false /> </dontSearch>
  1207.         <sharedText> <true /> </sharedText>
  1208.         <fixedLineHeight> <false /> </fixedLineHeight>
  1209.         <autoTab> <false /> </autoTab>
  1210.         <lockText> <false /> </lockText>
  1211.         <rect>
  1212.             <left>0</left>
  1213.             <top>20</top>
  1214.             <right>87</right>
  1215.             <bottom>339</bottom>
  1216.         </rect>
  1217.         <style>scrolling</style>
  1218.         <autoSelect> <false /> </autoSelect>
  1219.         <showLines> <false /> </showLines>
  1220.         <wideMargins> <false /> </wideMargins>
  1221.         <multipleLines> <false /> </multipleLines>
  1222.         <reservedFamily> 0 </reservedFamily>
  1223.         <titleWidth>0</titleWidth>
  1224.         <icon>0</icon>
  1225.         <textAlign>left</textAlign>
  1226.         <font>Geneva</font>
  1227.         <textSize>9</textSize>
  1228.         <textStyle>plain</textStyle>
  1229.         <textHeight>12</textHeight>
  1230.         <name>first of year</name>
  1231.         <script>on mouseUphide the targetend mouseUp</script>
  1232.     </part>
  1233.     <part>
  1234.         <id>105</id>
  1235.         <type>button</type>
  1236.         <visible> <false /> </visible>
  1237.         <reserved5> 0 </reserved5>
  1238.         <reserved4> 0 </reserved4>
  1239.         <reserved3> 0 </reserved3>
  1240.         <reserved2> 0 </reserved2>
  1241.         <reserved1> 0 </reserved1>
  1242.         <enabled> <true /> </enabled>
  1243.         <rect>
  1244.             <left>415</left>
  1245.             <top>248</top>
  1246.             <right>461</right>
  1247.             <bottom>263</bottom>
  1248.         </rect>
  1249.         <style>roundrect</style>
  1250.         <showName> <true /> </showName>
  1251.         <highlight> <false /> </highlight>
  1252.         <autoHighlight> <true /> </autoHighlight>
  1253.         <sharedHighlight> <true /> </sharedHighlight>
  1254.         <family>0</family>
  1255.         <titleWidth>0</titleWidth>
  1256.         <icon>0</icon>
  1257.         <textAlign>center</textAlign>
  1258.         <font>Chicago</font>
  1259.         <textSize>12</textSize>
  1260.         <textStyle>plain</textStyle>
  1261.         <name>Done</name>
  1262.         <script>on mouseUplock screenif the visible of bg field "utility a" is true then hideUtilityunlock screen with visual effect dissolveend mouseUp</script>
  1263.     </part>
  1264.     <part>
  1265.         <id>108</id>
  1266.         <type>button</type>
  1267.         <visible> <false /> </visible>
  1268.         <reserved5> 0 </reserved5>
  1269.         <reserved4> 0 </reserved4>
  1270.         <reserved3> 0 </reserved3>
  1271.         <reserved2> 0 </reserved2>
  1272.         <reserved1> 0 </reserved1>
  1273.         <enabled> <true /> </enabled>
  1274.         <rect>
  1275.             <left>375</left>
  1276.             <top>128</top>
  1277.             <right>501</right>
  1278.             <bottom>144</bottom>
  1279.         </rect>
  1280.         <style>transparent</style>
  1281.         <showName> <true /> </showName>
  1282.         <highlight> <true /> </highlight>
  1283.         <autoHighlight> <false /> </autoHighlight>
  1284.         <sharedHighlight> <true /> </sharedHighlight>
  1285.         <family>0</family>
  1286.         <titleWidth>0</titleWidth>
  1287.         <icon>0</icon>
  1288.         <textAlign>center</textAlign>
  1289.         <font>Chicago</font>
  1290.         <textSize>12</textSize>
  1291.         <textStyle>plain</textStyle>
  1292.         <name>ΓÇó Utility ΓÇó</name>
  1293.         <script></script>
  1294.     </part>
  1295.     <content>
  1296.         <layer>background</layer>
  1297.         <id>90</id>
  1298.         <text>validStack    --  validates all shows, results to filegoFirstCardOfYear  -- goes to first show of year</text>
  1299.     </content>
  1300.     <content>
  1301.         <layer>background</layer>
  1302.         <id>95</id>
  1303.         <text>74:175:4176:4577:8678:14679:22880:30481:39182:47783:54084:60685:67086:74187:78788:87389:95390:102691:1100</text>
  1304.     </content>
  1305.     <content>
  1306.         <layer>background</layer>
  1307.         <id>98</id>
  1308.         <text>Help for bkgnd button "Utility..."...  This button shows a text field which contains a list of  miscellaneous handler functions in the background and  stack scripts which may be handy, but are not important  enough to include as buttons.</text>
  1309.     </content>
  1310.     <name>Show Card</name>
  1311.     <script>on mouseDownhideTheHiliteend mouseDownon closeCardhideTheHiliteset the scroll of field "songs" to 0end closeCardon miscshow field "misc commands"end miscon showUtilityshow bg field "utility a"show bg field "utility b"show bg button "ΓÇó Utility ΓÇó"show bg button "Import Shows..."show bg button "Export Shows..."show bg button "Delete Shows..."show bg button "Done"end showUtilityon hideUtilityhide bg field "utility a"hide bg field "utility b"hide bg button "ΓÇó Utility ΓÇó"hide bg button "Import Shows..."hide bg button "Export Shows..."hide bg button "Delete Shows..."hide bg button "Done"end hideUtilityon hideTheHilitelock screenhide bkgnd button "Last Time"hide bkgnd button "Next Time"hide field "selected"---put empty into field "selected"end hideTheHiliteon hiliteLine theLine--  remember that the scroll bar is 16 pixels wide.--  textWidth is field width - 16--  text center is field center - 8put the rect of field "songs" into setRectput line theLine of field "songs" into theSong--put item 2 of setRect into setTopPixelput item 4 of setRect into setBottomPixel--put the textHeight of field "songs" into linePixelsput (linePixels * (theLine - 1)) - the scroll of field "songs"┬¼+ 7 + setTopPixel into midLine--if ( midLine > setBottomPixel ) thenput the scroll of field "songs" + (midLine - setBottomPixel) + 7┬¼into scrollPixelsset the scroll of field "songs" to scrollPixelssubtract ((midLine - setBottomPixel) + 7) from midLineend ifset the lockScreen to truesetSelect theSong, midLineshowButtons midLineend hiliteLineon setSongHilite theSongput the number of lines in field "songs" into numSongsrepeat with i = 1 to numSongsif line i of field "songs" is theSong thenhiliteLine iexit setSongHiliteend ifend repeatend setSongHiliteon selectSong songNumset the lockScreen to falseput the rect of field "selected" into theRectput item 2 of theRect + 7 into midLineshowButtons midLineend selectSongon setSelect theSong, midLineput the loc of field "songs" into setLocput theSong into field "selected"put (item 1 of setLoc - 8) & "," & midLine into theLocset the loc of field "selected" to theLocshow field "selected"end setSelecton showButtons midLineput the rect of field "songs" into setRectput (item 1 of setRect - 8) & "," & midLine into theLocset the loc of bkgnd button "Last Time" to theLocshow bkgnd button "Last Time"put (item 3 of setRect + 6)  & "," & midLine into theLocset the loc of bkgnd button "Next Time" to theLocshow bkgnd button "Next Time"end showButtonson dumpWasThereglobal deadDir, defFileCreatorask "Dump list to file..." with deadDirif it is empty then exit dumpWasThereput it into fileNameopen file fileNamelock screenpush this cardgo card 1find "X" in field "I Was There"if the result is not empty then exit dumpWasThereput field "date" into firstDaterepeat with i = 1 to the number of cardsshowBusywrite field "date" & "  " & field "location" & return to file fileNamefind "X" in field "date"if field "date" is firstDate then exit repeatend repeatclose file fileNamesetFileType fileName, "TEXT", defFileCreatorend dumpWasThereon findSong theSongrepeat foreverfind string theSongif the result is not empty thenanswer "That song doesn't ring a bell..."exit findSongend ifif theSong is in field "songs" thenexit findSongend ifend repeatend findSongon replaceSong oldTitle, newTitleset the lockScreen to truego card 1find oldTitle in field "songs"if the result is empty thenput the id of this card into firstCardrepeat foreverput field "songs" into songListrepeat with index = 1 to 50if line index of field "songs" is oldTitle thenput newTitle into line index of field "songs"exit repeatend ifend repeatgo next cardfind oldTitle in field "songs"if the result is not empty or┬¼the id of this card is firstCard thenexit repeatend ifend repeatend ifend replaceSongon cleanShowpush this cardset the lockScreen to trueget field "date"convert it to dateItemsput item 1 of it into theYearput the number of field "songs" into songsFldrepeat with i = 1 to the number of lines in field songsFldget line i of field songsFldcleanSong it, theYear, -1end repeatpop cardset the lockScreen to falseanswer "Delete the card?" with "OK" or "NO!"if it is "OK" thendoMenu "Delete Card"end ifend cleanShowon addShowpush this cardlock screenget field "date"convert it to dateItemsput field "songs" into songListput item 1 of it into theYearput return into newListgo stack "Songs"repeat with i = 1 to the number of lines in songListput Trim(line i of songList) into theSongif theSong is not empty thenif (return & theSong & return) is not in newList thenput theSongshowBusycleanSong theSong, theYear, 1put theSong & return after newListend ifend ifend repeatpop cardend addShowon cleanSong theSong, theYear, valfind string theSong in field "title"if the result is empty thenput the id of this card into firstCardrepeat foreverif field "title" is theSong thenchangeCount val, theYearexit repeatend ifgo next cardfind theSong in field "title"if the id of this card is firstCard then exit repeatend repeatend ifend cleanSongon validateShow fileNameput 0 into totProblemsput Trim( field "songs" ) into songListif the number of lines in songList is 0 thenput "No songs..."exit validateShowend ifput field "total songs" into songCountif fileName is not empty thenput return & field "date" && field "location" & return into showHeaderend ifput 0 into songsCheckedput 1 into songIndexset the lockScreen to truepush this cardput false into doUpdateset the cursor to 4go stack "Songs"--  do for number of songs plus some slush,  never more than 50put 0 into firstIDrepeat while songsChecked < (songCount + 12)  and  songIndex < 50put line songIndex of songList into thisSongadd 1 to songIndexif thisSong is empty thennext repeatend ifadd 1 to songsCheckedput huntSong( thisSong, fileName ) into checkSong-- put old huntSong back hereif checkSong is empty thenbeep 2next repeatelse if checkSong is not thisSong thenput checkSong into line (songIndex - 1) of songListadd 1 to totProblemsend ifend repeatpop cardunlock screenif totProblems > 0 thenput totProblems && "songs changed!"put songList into field "songs"put songsChecked into field "total songs"elseput "No problems!"end ifend validateShowon validateTitles fileNameglobal bigSongListput 0 into totProblemsput Trim( field "songs" ) into songListif the number of lines in songList is 0 thenput "No songs..."exit validateTitlesend ifput field "total songs" into songCountput 0 into songsCheckedput 1 into songIndex--repeat while songsChecked < (songCount + 12)  and  songIndex < 50put line songIndex of songList into thisSongadd 1 to songIndexif thisSong is empty thennext repeatend ifadd 1 to songsCheckedif return & thisSong & return is not in bigSongList thenwrite thisSong & " - " & field "date" & return to file fileNameadd 1 to totProblemsend ifend repeatunlock screenif totProblems > 0 thenput totProblems && "problems!"elseput "No problems!"end ifend validateTitlesfunction huntSong theSong, fileNameglobal autoFixput empty into firstIDput empty into showHeader  -- need to pass this in?put Trim( theSong ) into thisSongif thisSong is empty thenexit huntSongend ifrepeat forever   -- outer function loopput false into doRetryrepeat forever   -- look for this as the title...find thisSong in field "title"if the result is not empty then  -- not found...exit repeatend ifif firstID is empty thenput the id of this card into firstIDelseif the ID of this card is firstID thenexit repeat   -- didn't find it...end ifend ifif field "title" is thisSong thenreturn thisSong  -- for sure!end ifgo next cardend repeatif fileName is not empty thenwrite "Not sure about ... '" & thisSong & "'" & return to file fileNameelseput "Not sure about ... '" & thisSong & "'"end ifput empty into firstIDrepeat forever   -- now check for an alias...find thisSong in field "aka"if the result is not empty then   -- if one IS NOT FOUNDexit repeatend ifif firstID is empty thenput the id of this card into firstIDelseif the ID of this card is firstID thenexit repeatend ifend ifput field "title" into realSongif autoFix is true thenif fileName is not empty thenwrite "Changining '" & thisSong & "' to " & realSong & return to file fileNameelseput "Changining " & thisSong & " to " & realSongend ifreturn realSongend ifanswer "Maybe it's ... " & quote & realSong & quote┬¼with "Yup!" or "Nope!"if it is "Yup!" thenput realSong into thisSongreturn realSongend ifgo next cardend repeat----  if we have reached here, we have a problemif fileName is empty thenrepeat foreveranswer "Don't recognize " & thisSong & "..." with┬¼"Skip" or "Create" or "Change"if it is "Skip" thenexit repeatelse if it is "Create" thendoMenu "New Card"put thisSong into field "title"exit repeatelse if it is "Change" thenput thisSong into oldSongask "What is the correct title?" with thisSongif it is empty then exit repeatput it into thisSongput true into doRetryexit repeatend ifend repeatelse  -- we have a fileName, use it!-- play boingwrite showHeader & thisSong & return to file fileNameput empty into showHeaderend ifif not doRetry then return thisSong    -- if I get this far, it's OKend repeatend huntSongon validFileglobal deadDir, defFileCreatorask "Validate show to file:" with deadDirif it is empty then exit validFileput it into fileNameopen file fileNamevalidateShow fileNameclose file fileNamesetFileType fileName, "TEXT", defFileCreatorend validFile--  This handler will validate the entire stack.  It tries to use a file--  in your default directory called "songList" which contains a list--  of valid song titles in alphabetical order.  You should generate--  such a file from the Songs stack using the Export (titles only)--  function.--on validStackglobal bigSongList, deadDir, defFileCreatorask "Validate show to file:" with deadDirif it is empty then exit validStackput it into fileNameput return into bigSongListput deadDir & ":songList" into fileNameopen file listFilerepeat foreverread from file listFile until returnif it is empty then exit repeatput it after bigSongListend repeatclose file listFilebeep 3open file fileNamewrite "Starting at ... " & field "date" & return to file fileNamepush this card--  go card 1repeat for the number of cardsvalidateTitles fileNamego next cardend repeatclose file fileNamesetFileType fileName, "TEXT", defFileCreatorpop cardend validStackon finishYearglobal autoFix, deadDir, defFileCreatorput autoFix into localFixput true into autoFixpush this cardput field "date" into theDateput piece( theDate, "/", 3 ) into startYearput "Doing rest of year '" & startYearput deadDir & ":validate" into theFileopen file theFilerepeat for the number of cardswrite theDate & ":" & return to file theFilevalidateShow theFilego next cardput field "date" into theDateput piece( theDate, "/", 3 ) into year--if year is not startYear then exit repeatend repeatclose file theFilesetFileType theFile, "TEXT", defFileCreatorput localFix into autoFixpop cardend finishYearon checkDupsglobal deadDir, defFileCreatorpush this cardput deadDir & ":duplicates" into fileNameopen file fileNamego card 1repeat for the number of cardsput findDups( field "songs" ) into theDupsif theDups is not empty thenwrite field "date" & ": " & theDups & return to file fileNameend ifgo next cardend repeatclose file fileNamesetFileType fileName, "TEXT", defFileCreatorpop cardend checkDupsfunction findDups theListput empty into outListput empty into theDupsrepeat with i = 1 to the number of lines in theListif line i of theList  is in outList thenput line i of theList & "," after theDupsend ifput line i of theList  after outListend repeatreturn theDupsend findDupson countAllrepeat for the number of cardsput countSongs() into theCountif theCount is not field "total songs" thenbeep 2put field "date" & " - old: " & field "total songs" &┬¼",  new: " & theCountput theCount into field "total songs"end ifgo next cardend repeatend countAllfunction countSongsput empty into outListput field "songs" into songListput 0 into songCountrepeat with i = 1 to the number of lines in songListshowBusyif line i of songList is not empty then-- don't count duplicates within a show...if line i of songList  is not in outList thenput line i of songList after outListadd 1 to songCountend ifend ifend repeatreturn songCountend countSongson updateCountsrepeat for the number of cardscountSongsgo next cardend repeatend updateCountson fixitglobal autoFixanswer "Use auto-fix...?" with "OK" or "No"if it is "OK" thenput true into autoFixelseput false into autoFixend ifend fixit--  the bg field "first of year" contains a list of years and the--  number of the first card for that year.  following is a setup--  routine for the data in this field, which should rarely change,--  and the goToFirstOfYear handler which uses iton setUpFirstOfYearpush this cardlock screengo card 1put piece( field "date", "/", 3 ) into firstYearput firstYear & ":1" & return into theListput piece( the date, "/", 3 ) into finalYear   -- thru todayrepeat with year = firstYear + 1 to finalYearshowBusy-- put " " & year after the messagefind ("/" & year) in field "date"--  if the result is not empty then exit repeatput year & ":" & the number of this card & return after theListend repeatput theList into bg field "first of year"pop cardend setUpFirstOfYearon goFirstCardOfYear theYearif ( theYear > 1900 ) then put theYear - 1900 into theYearrepeat with i = 1 to the number of lines in field "first of year"put line i of field "first of year" into theLineif ( piece( theLine, ":", 1 ) is theYear ) thenput piece( theLine, ":", 2 ) into theCardexit repeatend ifend repeatgo card theCardend goFirstCardOfYearon findSoundStackglobal soundStackpush this cardgo card "Dead Config" of stack "Dead Utility"put card field "Sound Stack" into soundStackpop cardput "Using sounds in ... " & soundStackend findSoundStack--  Used to clean up for distribution--on setForReleaseset the cursor to watchgoFirstCardOfYear 1974if field "date" is not "2/22/74" thenput "Something is not quite right..."exit setForReleaseend ifput the number of this card - 1 into delCardsgo card 1answer "This will delete " & delCards & "cards..." with "Go For It" or "Cancel"if it is "Go For It" thenanswer "Are you REALLY SURE?..." with "YES" or "Cancel"if it is not "YES" then exit setForReleaserepeat for delCardsgo card 1showBusydoMenu "Delete Card"end repeatunsetWasTheresetUpFirstOfYeardoMenu "Compact Stack"end ifend setForReleaseon unsetWasThereput 0 into showCountrepeat foreverfind "X" in field "I Was There"if the result is not empty then exit repeatput empty into field "I Was There"add 1 to showCountend repeatanswer "Cleared " & showCOunt & " shows!"end unsetWasThereon badVoodoput "Delete card " & the number of this card ┬¼& " through card " & the number of cards &  "?" into thePromptanswer thePrompt with "You Bet!" or "Cancel"if it is "You Bet!" thenanswer "Are You sure??" with "You Bet!" or "Cancel"if it is "You Bet!" thenrepeat foreverdoMenu "Delete Card"if the number of this card <1796 then exit repeatput the number of this cardend repeatend ifend ifend badVoodo</script>
  1312. </background>
  1313.